/*
 * Astar.h
 *
 *  Created on: 02.04.2012
 *      Author: ignacio
 */

#ifndef ASTAR_H_
#define ASTAR_H_

#include "Graph.h"
#include "vector.h"
#include "path.h"

namespace neurignacio
{
typedef DFSVertex<Vector3> VectorVertex; // value is a pointer to Vector3
typedef Edge<VectorVertex> VectorEdge;	// u and v are pointers to VectorVertex
typedef AdjacencyList<Vector3> VectorAdjacencyList;
typedef AdjacencyGraph<Vector3> GraphVector;
template <> VectorVertex::timestamp_t AStar_Heuristic(VectorVertex* u, VectorVertex* v);
void AStar_Example(void);
void Hypergraph_Example(void);
void Hyper_AStar_Example(void);
template <> Hypergraph<Vector3>::Vertex_t* Hypergraph<Vector3>::getPointer(const Vector3& u, real distance) const; // Particular case for Vector3 Hypergraph

VectorPath VertexPathToVectorPath(Path<VectorVertex>& path);
} // end namespace neurignacio



#endif /* ASTAR_H_ */
